package com.newtouch.avmarketing.mongo.po;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 保单信息
 */


@ApiModel("保单信息")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document("policyInfos")
public class PolicyPo {

    @Id
    @Field("_id")
    private String id;

    @ApiModelProperty(notes = "总保险金额")
    private String totalAmount;

    @ApiModelProperty(notes = "总保费")
    private String totalPremium;

    @ApiModelProperty(notes = "投保单标识  0:柜面 1:个人  3:个人人身保险投保单（意外险简化版）   4:个人人身保险投保单（年金险、特定两全险简化版）")
    private String appFlag;

    @ApiModelProperty(notes = "电子订阅  0:否 1:订阅")
    private String noticeFlag;

    @ApiModelProperty(notes = "是否暂存保单  0:暂存提交  正常保单传null")
    private String submitFlag;

    @ApiModelProperty(notes = "出单方式，0：纸质保单   1：电子保单  2：电子保单+纸质保单 3：保障小贴士")
    private String policyOptions;

    @ApiModelProperty(notes = "缴费方式说明")
    private String paymentModeDesc;

    @ApiModelProperty(notes = "数字签名标志 0:传统方式  1:数字签名")
    private String signatureWay;

    @ApiModelProperty(notes = "数字签名 提示书签名时间")
    private String promptBookSignTime;

    @ApiModelProperty(notes = "数字签名 38字签名时间")
    private String promptWordsSignTime;

    @ApiModelProperty(notes = "数字签名 投保人签名时间")
    private String policySignTime;

    @ApiModelProperty(notes = "数字签名 被保人签名时间")
    private String insuredSignTime;

    @ApiModelProperty(notes = "是否垫缴  0: 否  1: 是")
    private String advancePayment;

    @ApiModelProperty(notes = "投保单号")
    private String policyCode;

    @ApiModelProperty(notes = "销售渠道  默认10")
    private String sale_channel;

    @ApiModelProperty(notes = "投保单类型 0:常规投保单;F:进FF投保单;C:进CBS投保单;D:电销投保单;G:投连投保单;H:柜面录单投保单;E:E保投保单")
    private String app_type;

    @ApiModelProperty(notes = "销售类型")
    private String sale_type;

    @ApiModelProperty(notes = "业务员代码")
    private String distributorCode;

    @ApiModelProperty(notes = "业务员姓名")
    private String distributor_name;

    @ApiModelProperty(notes = "投保人与被保人关系代码")
    private String relationship_code;

    @ApiModelProperty(notes = "生效日期")
    private String issue_date;

    @ApiModelProperty(notes = "是否指定生效日 0:否  1是")
    private String isSelectValidDate;

    @ApiModelProperty(notes = "投保人姓名")
    private String owner_name;

    @ApiModelProperty(notes = "投保人信息",name = "投保人信息")
    private P10SubmitOwner_nodePo owner_node;

    @ApiModelProperty(notes = "被保人信息")
    private P10SubmitOwner_nodePo was_node;

    @ApiModelProperty(notes = "受益人信息")
    private ArrayList<P10SubmitOwner_nodePo> annuitant_node;

    @ApiModelProperty(notes = "代位投保人信息")
    private P10SubmitOwner_nodePo appointApplic_node;

    @ApiModelProperty(notes = "受益分配信息")
    private P10SubmitBeneficiary benefic;

    @ApiModelProperty(notes = "受益分配信息ca")
    private P10SubmitBeneficiary benefic_ca;

    @ApiModelProperty(notes = "缴费信息")
    private P10SubmitPayment payment;

    @ApiModelProperty(notes = "保项")
    private ArrayList<P10SubmitCoverage_node> coverage;

    @ApiModelProperty(notes = "客户基本核保信息")
    private ArrayList<P10SubmitCustomer_uw_node> customer_uw;

    @ApiModelProperty(notes = "核保问题")
    private ArrayList<P10SubmitUnderwriting_node> underwriting;

    @ApiModelProperty(notes = "特别约定")
    private ArrayList<P10SubmitSpecial_clause_node> special_node;

    @ApiModelProperty(notes = "审核session")
    private String session;

    @ApiModelProperty(notes = "被保人生日 格式 yyyy/mm/dd")
    private String was_birthday;

    @ApiModelProperty(notes = "消息code")
    private String err_code;

    @ApiModelProperty(notes = "消息值")
    private String err_msg;

    @ApiModelProperty(notes = "争议处理方式")
    private String dispose_or_not;

    @ApiModelProperty(notes = "争议处理方式内容")
    private String disputes_dispose_way;

    @ApiModelProperty(notes = "告知事项 补充")
    private String remarks;

    @ApiModelProperty(notes = "保障计划名称(保障计划特有)")
    private String producttype;

    @ApiModelProperty(notes = "投保确认书号")
    private String confirmbook;

    @ApiModelProperty(notes = "保单状态  1:正在购买  2:核保通过  3:核保通过未支付  4:客户不承保  5:已支付")
    private String policyStatus;

    @ApiModelProperty(notes = "pos支付方式code")
    private String paystyle_code;

    @ApiModelProperty(notes = "支付号")
    private String order_id;

    @ApiModelProperty(notes = "支付号生成时间")
    private String order_id_insert_time;

    @ApiModelProperty(notes = "支付成功时间")
    private String paystyleTime;

    @ApiModelProperty(notes = "支付金额")
    private String paystyTotalAmount;

    @ApiModelProperty(notes = "保障期间")
    private String insurancePeriod;

    @ApiModelProperty(notes = "保单是否可修改 0:不允许修改  1:允许")
    private String can_be_modified;

    @ApiModelProperty(notes = "生存受益人信息 1:投保人 2:被保人")
    private String isAlive;

    @ApiModelProperty(notes = "本保单是否需要考虑 投保人生日件 问题 1:存在  0:不存在")
    private String existChildInsurance;

    @ApiModelProperty(notes = "投保人生日 格式 yyyy/mm/dd")
    private String owner_birthday;

    @ApiModelProperty(notes = "生存受益人")
    private List<AliveBeneficiaryInfoPo> aliveBeneficiaryInfo;

    @ApiModelProperty(notes = "交费方式：存放枚举项代码")
    private String paymentMode;

    @ApiModelProperty(notes = "开户银行：存放银行类型")
    private String accountBank;

    @ApiModelProperty(notes = "开户银行：存放银行类")
    private String accountBankType;

    @ApiModelProperty(notes = "客户来源  传的值有：陌生  缘故 转介绍 互联网 公司活动 其他（包括客户自行录入的客户来源描述）")
    private String clientSource;

    /**
     * 用于存放告知内容(
     * 枚举值jy17：投保《附加投保人保险费豁免重大疾病保险（2017版）》，新增如下特约内容：若被保险人符合“附加金佑人生提前给付重大疾病保险A款（2017版）”合同中特定疾病提前给付保险金给付条件，并按约定豁免“金佑人生终身寿险（分红型）A款（2017版）”合同及“附加金佑人生提前给付重大疾病保险A款（2017版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     * ----枚举值jn17 :投保《附加投保人保险费豁免重大疾病保险（2017版）》，新增如下特约内容：
     * 若被保险人符合“金诺人生重大疾病保险A款（2017版）”合同中特定疾病提前给付保险金给付条件，并按约定豁免“金诺人生重大疾病保险A款（2017版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     * ----枚举值awy2：投保《附加投保人保险费豁免重大疾病保险（2017版）》，新增如下特约内容：若被保险人符合“附加爱无忧防癌疾病保险（2.0版）”合同中癌症轻症额外给付保险金给付条件，并按约定豁免“爱无忧两全保险（2.0版）”合同及“附加爱无忧防癌疾病保险（2.0版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     *
     * 枚举值jyjq：投保《附加投保人保险费豁免重大疾病保险（加强版）》，新增如下特约内容：若被保险人符合“附加金佑人生提前给付重大疾病保险A款（2017版）”合同中特定疾病提前给付保险金给付条件，并按约定豁免“金佑人生终身寿险（分红型）A款（2017版）”合同及“附加金佑人生提前给付重大疾病保险A款（2017版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     * ----枚举值jnjq : 投保《附加投保人保险费豁免重大疾病保险（加强版）》，新增如下特约内容：
     * 若被保险人符合“金诺人生重大疾病保险A款（2017版）”合同中特定疾病提前给付保险金给付条件，并按约定豁免“金诺人生重大疾病保险A款（2017版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     * ----枚举值awy2jq：投保《附加投保人保险费豁免重大疾病保险（加强版）》，新增如下特约内容：若被保险人符合“附加爱无忧防癌疾病保险（2.0版）”合同中癌症轻症额外给付保险金给付条件，并按约定豁免“爱无忧两全保险（2.0版）”合同及“附加爱无忧防癌疾病保险（2.0版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     *
     * 枚举值jyhm：投保《附加投保人豁免保险费意外伤害保险》，新增如下特约内容：若被保险人符合“附加金佑人生提前给付重大疾病保险A款（2017版）”合同中特定疾病提前给付保险金给付条件，并按约定豁免“金佑人生终身寿险（分红型）A款（2017版）”合同及“附加金佑人生提前给付重大疾病保险A款（2017版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     * ----枚举值jnhm : 投保《附加投保人豁免保险费意外伤害保险》，新增如下特约内容：
     * 若被保险人符合“金诺人生重大疾病保险A款（2017版）”合同中特定疾病提前给付保险金给付条件，并按约定豁免“金诺人生重大疾病保险A款（2017版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。
     * ----枚举值awyhm：投保《附加投保人豁免保险费意外伤害保险》，新增如下特约内容：若被保险人符合“附加爱无忧防癌疾病保险（2.0版）”合同中癌症轻症额外给付保险金给付条件，并按约定豁免“爱无忧两全保险（2.0版）”合同及“附加爱无忧防癌疾病保险（2.0版）”合同的保险费的，本附加险合同自动终止，本公司不再收取后续保险费，并向您退还本附加险合同保险单的现金价值。)
     */
    @ApiModelProperty(notes = "告知内容（传核心的枚举标识）")
    private String specialContent;

    @ApiModelProperty(notes = "指定投保人标识 0:不指定  1:指定（成年） 2:指定（未成年）")
    private String  isAppointApplic;

    @ApiModelProperty(notes = "是否参加社会医疗保险 1:是  0:否")
    private String  socialYlFlag;

    @ApiModelProperty(notes = "房贷信息")
    private HomeLoansInfo homeLoansInfo;

    @ApiModelProperty(notes = "是否删除 0:未删除  1:已删除")
    private String isValid;

    @JsonIgnore
    @CreatedDate
    private Date createdDt;

    @JsonIgnore
    @LastModifiedDate
    private Date updatedDt;
}
